Stored Procedures [dbo].[asi_DocumentDeleteDocument]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@documentVersionKeyuniqueidentifier16
@purgeVersionsbit1
SQL Script

-- Deletes a document that is either a leaf node in a hierarchy, or a document not participating
-- in a hierarchy (a stand alone document).  This procedure takes into account any custom access
-- control, as well as whether the document is versioned or not.  This Stored Procedure should not
-- be called directly; it is called by asi_DocumentDelete or asi_DocumentDeleteHierarchy.
CREATE PROCEDURE [dbo].[asi_DocumentDeleteDocument]
    @documentVersionKey uniqueidentifier,
    @purgeVersions bit = 0
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @documentKey uniqueidentifier
    DECLARE @accessKey uniqueidentifier
    DECLARE @isVersioned bit
    DECLARE @publishedVersionExists bit

    SET @publishedVersionExists = 1
    SELECT @documentKey = d.[DocumentKey], @accessKey = d.[AccessKey], @isVersioned = t.[TrackVersionsFlag]
      FROM [dbo].[DocumentMain] d INNER JOIN [dbo].[DocumentTypeRef] t ON d.[DocumentTypeCode] = t.[DocumentTypeCode]
     WHERE d.[DocumentVersionKey] = @documentVersionKey AND d.[DocumentStatusCode] IN (40,60)

    IF @documentKey IS NULL -- Could not find a published version
    BEGIN
        SET @publishedVersionExists = 0
        IF EXISTS (SELECT 1 FROM [dbo].[DocumentMain] d WHERE d.[DocumentVersionKey] = @documentVersionKey)
        BEGIN
            SET @isVersioned = 1
        END
    END

    IF @isVersioned = 1
    BEGIN
        IF @purgeVersions = 0
        BEGIN
            -- Versioned document... just Recycle it
            UPDATE [dbo].[DocumentMain] SET [DocumentStatusCode] = 80
             WHERE [DocumentKey] = @documentKey
        END
        ELSE
        BEGIN
            -- Versioned document... purge all versions
            DECLARE @documents TABLE (DocumentKey uniqueidentifier NOT NULL)
            INSERT INTO @documents
                SELECT [DocumentKey] FROM [dbo].[DocumentMain] d WHERE d.[DocumentVersionKey] = @documentVersionKey
                
            DELETE FROM [dbo].[Hierarchy] WHERE [UniformKey] = @documentVersionKey
            EXEC [dbo].[asi_AccessKeyDelete] @accessKey
            DELETE prd FROM @documents d INNER JOIN [dbo].[PublishRequestDetail] prd ON d.[DocumentKey] = prd.[ContentDocumentKey]
            DELETE dm FROM @documents d INNER JOIN [dbo].[DocumentMain] dm ON d.[DocumentKey] = dm.[DocumentKey]
            DELETE FROM [dbo].[UniformRegistry] WHERE [UniformKey] = @documentVersionKey
            DELETE u FROM @documents d INNER JOIN [dbo].[UniformRegistry] u ON d.[DocumentKey] = u.[UniformKey]
        END
    END
    ELSE IF @documentKey IS NOT NULL
    BEGIN
        -- Non-versioned document... delete all references
        DELETE FROM [dbo].[Hierarchy] WHERE [UniformKey] = @documentVersionKey
        EXEC [dbo].[asi_AccessKeyDelete] @accessKey
        DELETE FROM [dbo].[PublishRequestDetail] WHERE [ContentDocumentKey] = @documentKey
        DELETE FROM [dbo].[DocumentMain] WHERE [DocumentVersionKey] = @documentVersionKey
        DELETE FROM [dbo].[UniformRegistry] WHERE [UniformKey] = @documentKey
        DELETE FROM [dbo].[UniformRegistry] WHERE [UniformKey] = @documentVersionKey
    END
    
    SET NOCOUNT OFF
END


GO
Uses
Used By